package com.geek.water.config;

import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * @Description Swagger配置类
 * @Author chenmin
 * @Version 1.0
 * @Date 2023/3/15 15:17
 *
 * Swagger2常用注解
 * 1.@ApiModel：用于描述一个 Java 实体类（Model） 的信息
 * 2.@ApiModelProperty：用于描述实体类中的 字段（属性） 的信息
 * 3.@Api：用于描述一个 Controller 类 的整体信息
 * 4.@ApiOperation：用于描述 Controller 类中的 单个接口方法，说明该接口的功能
 * 5.@ApiParam：用于描述接口方法中的 参数（包括路径参数、请求参数、请求体参数等）
 *
 * http://localhost:8080/swagger-ui.html
 * http://localhost:8080/doc.html
 */
@Configuration
@EnableSwagger2
@EnableKnife4j//开启离线文档
public class Swagger2Config{

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.geek.water.controller"))
                .paths(PathSelectors.any())
                .build();
    }

    //Swagger文档信息
    public ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("springboot利用swagger2构建api接口文档 "+"\t"+ DateTimeFormatter.ofPattern("yyyy-MM-dd").format(LocalDateTime.now()))
                .description("有问题给管理员邮件:3168850469@qq.com")
                .version("1.0")
                .termsOfServiceUrl("https://www.igeekhome.com/")
                .build();
    }
}
